The mainstream of an integrated circuit design is an RTL (Register Transfer Level) design which uses a hardware description language (HDL). The level of abstraction of the design of the RTL design is higher than that of a gate level design, and hence it is possible to increase the speed of development.
On the other hand, the RTL design is becoming incapable of coping with the circuit scale of the integrated circuit which becomes larger and larger every year, and the use of a high level design having the level of abstraction higher than that of the RTL design is started. In the high level design, the behavioral description of the integrated circuit is generated by using C/C++ language or System C having a class library for a hardware description, and a high level synthesis (also referred to as behavioral synthesis or functional synthesis) tool converts the behavioral description in C language or the like to a functional description which is an RTL description. Thereafter, similarly to the RTL design, a logic synthesis tool converts the RTL functional description to a logic description which is a gate description (or a net list), an automatic wiring tool further performs a layout design based on the net list, and mask data for an SoC (System On Chip) is generated. Alternatively, a logic synthesis tool for an FPGA (Field Programmable Gate Array) generates configuration data for the FPGA from the RTL functional description.
Thus, in the high level design, the high level synthesis tool which converts the behavioral description in the C language or the like to the functional description in the HDL is used. The high level synthesis tool generates the hardware description in the HDL having various circuit configurations from source code described in a software language having a high level of abstraction based on a constraint of a high level synthesis. Examples of the constraint of the high level synthesis include operation speed (clock frequency), latency (the number of clocks from input to output), the number of arithmetic circuits or memories, a circuit scale, and a circuit area.